const jwt = require('jsonwebtoken');
const secretKey = 'itheima No1 ^_^';

//在实际业务处理过程中，往往需要进行多次的数据库访问。这些访问的性质往往是相同的。采用Dao层可以对数据库访问进行封装，避免进行重复性的数据库访问开发操作。同时也降低了维护的成本
module.exports = class admainDao extends require('../model/admainModel') {

    // 登录
    static async loginAdmainDao(req, res) {
        const list = await this.findAdmainListByCond(req,res)
        if (list.length>0){
            const tokenStr = jwt.sign({ id: list[0].id }, secretKey, { expiresIn: '1h' })
            res.send({ status: 1, message: 'ok', successMessage: list[0],tokenStr : tokenStr})
        } else {
            res.send({ status: 0, message: 'error', errorMessage: "用户名或密码错误" })
        }
    }


    //查找
    static async admainListDao(req, res) {
        await this.findAdmainList().then((r) => {
            res.send({ status: 1, message: 'ok', successMessage: r })
        }).catch((e) => {
            res.send({ status: 0, message: 'error', errorMessage: e })
        })
    }
    

    //注册管理员
    static async admainRegistertDao(req, res) {
        const list = await this.findAdmainListByCond(req,res)
        if (list.length > 0) {
            res.send({status: 0, message: 'error', errorMessage: "该管理员已被注册" })
        } else {
            await this.addAdmain(req, res).then((r) => {
                //请求成功，res的反应
                res.send({ status: 1, message: 'ok', successMessage: "注册成功" })
            }).catch((e) => {
                //请求失败，res的反应
                res.send({ status: 0, message: 'error', errorMessage: e })
            })
        }
    }

    //完善管理员信息
    static async admainChangeDao(req, res) {
        await this.changeAdmain(req, res).then((r) => {
            //请求成功，res的反应
            console.log("dao success",r)
            res.send({ status: 1, message: 'ok', successMessage: "修改管理员信息成功" })
        }).catch((e) => {
            console.log("dao",e)
            //请求失败，res的反应
            res.send({ status: 0, message: 'error', errorMessage: "修改管理员信息失败" })
        })
    }

    //禁用管理员
    static async userDisableDao(req, res) {
        await this.disableUser(req, res).then((r) => {
            //请求成功，res的反应
            res.send({ stauts: 1, message: 'ok', successMessage: "禁用管理员成功" })
        }).catch((e) => {
            //请求失败，res的反应
            res.send({ status: 0, message: 'error', errorMessage: "禁用管理员失败" })
        })
    }

     //获取指定管理员基本信息
     static async AdmainDetailDao(req,res) {
        const list = await this.findAdmainDetail(req,res)
        if (list.length>0){
            res.send({ status: 1, message: 'ok', successMessage: list[0]})
        } else {
            res.send({ status: 0, message: 'error', errorMessage: "管理员不存在" })
        }
    }
}